%matplotlib inline
import numpy as np
#import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
# Set up working environment for CoLoMoTo
import ginsim
import biolqm
import maboss
from colomoto_jupyter import tabulate # for fixpoint table display
from itertools import combinations # for iterating over sets
import matplotlib.pyplot as plt # for modifying plots
import pandas as pd # for the visualization of lists of states
Simulations:
Forewords: The models are first constructed with GINsim then exported in MaBoSS format. In the cfg file, the initial states are set to 0. The max_time is set to 50 units of time. The files used are: supp_mat_model.bnd and supp_mat_model.bnd.cfg
First sets of simulations: in this part, we explore the effect of each of the presence of the ligands of the inhibitory immune checkpoints on a generic T cell.
Second sets of simulations: we simulate the treatments in the two step model separating the lymph node (LN) and the tumour microenvironment (TME) for both CD4+ and CD8+ eclls
Third sets of simulations: we explore in the CD4+ cells, the impact of forcing the activity of the three transcription factors Tbet, FOXO1 and FOXP3 in CD4+ (3a) and CD8+ (3b)cells
Fourth sets of simulations: we modulate the activity of the cytokines and explore the impact on the activity of the TF and on the TCR signalling activity
In this section, we simulate the network with GINsim and explore its basic dynamics with MaBoSS
# Use biolqm to visualize the stable states
fixed_WT = biolqm.load("supp_mat_model.zginml")
# Compute fixpoints
#fp3 = biolqm.fixpoints(fixed_WT)
#print(len(fp3), "fixpoints")
#pd.DataFrame(fp3)
# Visualize the network
ginsim_WT = ginsim.load("supp_mat_model_ICI.zginml")
ginsim.show(ginsim_WT)
# Set up the required files
bnd_WT ="supp_mat_model_ICI.bnd"
cfg_WT = "supp_mat_model_ICI.bnd.cfg"
# Load the Wild-Type model
WT = maboss.load(bnd_WT, cfg_WT)
### All IC are 0
WT.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT = WT.run()
# Plot the results of the WT simulation
run_WT.get_nodes_probtraj().plot(legend=True)
plt.title('WT', fontsize=15)
plt.legend(fontsize=15, loc="best")
plt.xlabel('Time (a.u.)', fontsize=13)
run_WT.plot_piechart()
params = {'legend.fontsize': 15,
'legend.handlelength': 1,'legend.loc':"upper right"}
plt.rcParams.update(params)
plt.title('WT', fontsize=16)
As a first analysis, we explore the model dynamics and investigate the impact of each immune checkpoint individually on the TCR cell fate in CD4+ cells and in CD8+ cells
We wish to test the effect of each ligand on the activation of TCR signalling. Both ligands for either CD4+ or D8+ will be artificially present. The purpose here is to estimate how strong each of the inhibitory immune checkpoints are
WT_IC = maboss.copy_and_update_parameters(WT, {'max_time':50})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[0,1])
WT_IC.network.set_istate('MHCII',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_no_checkpoints')
run_WT_IC.plot_piechart()
params = {'legend.fontsize': 15,
'legend.handlelength': 1}
plt.rcParams.update(params)
plt.title('Wild Type no checkpoints', fontsize=16)
#plt.savefig('WT_no_checkpoints.png')
# Select outputs for visualisation of the results
#WT_IC.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
#run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
#run_WT_IC.get_nodes_probtraj().plot(legend=True)
#plt.title('WT_IC_CTLA4')
#run_WT_IC.plot_piechart()
#plt.title('WT_IC_CTLA4')
WT_IC = maboss.copy_and_update_parameters(WT, {'max_time':50})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[1,0])
WT_IC.network.set_istate('MHCII',[0,1])
WT_IC.network.set_istate('CD80_86',[0,1])
WT_IC.network.set_istate('TIM3_L',[1,0])
WT_IC.network.set_istate('LAG3_L',[1,0])
WT_IC.network.set_istate('TIGIT_L',[1,0])
WT_IC.network.set_istate('PD1_L',[1,0])
WT_IC.network.set_istate('TNFRs_L',[1,0])
WT_IC.network.set_istate('ICOS_L',[1,0])
#WT_IC.network.set_istate('TNFRs_L',[0,1])
#WT_IC.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_IC_CTLA4')
run_WT_IC.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title('Wild Type with CTLA4 ON', fontsize=16)
# Select outputs for visualisation of the results
#WT_IC.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
#run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
#run_WT_IC.get_nodes_probtraj().plot(legend=True)
#plt.title('WT_IC_CTLA4')
#run_WT_IC.plot_piechart()
#plt.title('WT_IC_CTLA4')
WT_IC = maboss.copy_and_update_parameters(WT, {'max_time':50})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[0,1])
WT_IC.network.set_istate('MHCII',[0,1])
WT_IC.network.set_istate('CD80_86',[1,0])
WT_IC.network.set_istate('CD28',[0,1])
WT_IC.network.set_istate('TIM3_L',[1,0])
WT_IC.network.set_istate('LAG3_L',[1,0])
WT_IC.network.set_istate('TIGIT_L',[1,0])
WT_IC.network.set_istate('PD1_L',[0,1])
#WT_IC.network.set_istate('TIM3_L',[0,1])
#WT_IC.network.set_istate('LAG3_L',[0,1])
#WT_IC.network.set_istate('TIGIT_L',[0,1])
#WT_IC.network.set_istate('PD1_L',[0,1])
#WT_Tum.network.set_istate('TIGIT_L',[1,0])
#WT_Tum.network.set_istate('PD1_L',[1,0])
WT_IC.network.set_istate('TNFRs_L',[1,0])
WT_IC.network.set_istate('ICOS_L',[1,0])
#WT_IC.network.set_istate('TNFRs_L',[0,1])
#WT_IC.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_IC_PD1')
run_WT_IC.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title('Wild Type with PD1 ON', fontsize=16)
# Select outputs for visualisation of the results
#WT_IC.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
#run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
#run_WT_IC.get_nodes_probtraj().plot(legend=True)
#plt.title('WT_IC_PD1')
#run_WT_IC.plot_piechart()
#plt.title('WT_IC_PD1')
WT_IC = maboss.copy_and_update_parameters(WT, {'max_time':50})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[0,1])
WT_IC.network.set_istate('MHCII',[0,1])
WT_IC.network.set_istate('CD80_86',[1,0])
WT_IC.network.set_istate('CD28',[0,1])
WT_IC.network.set_istate('TIM3_L',[1,0])
WT_IC.network.set_istate('LAG3_L',[1,0])
WT_IC.network.set_istate('TIGIT_L',[0,1])
WT_IC.network.set_istate('PD1_L',[1,0])
WT_IC.network.set_istate('TNFRs_L',[1,0])
WT_IC.network.set_istate('ICOS_L',[1,0])
#WT_IC.network.set_istate('TNFRs_L',[0,1])
#WT_IC.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_IC_TIGIT')
run_WT_IC.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title('Wild Type with TIGIT ON', fontsize=16)
# Select outputs for visualisation of the results
#WT_IC.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
#run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
#run_WT_IC.get_nodes_probtraj().plot(legend=True)
#plt.title('WT_IC_TIGIT')
#run_WT_IC.plot_piechart()
#plt.title('WT_IC_TIGIT')
WT_IC = maboss.copy_and_update_parameters(WT, {'max_time':100})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[0,1])
WT_IC.network.set_istate('MHCII',[0,1])
WT_IC.network.set_istate('CD80_86',[1,0])
WT_IC.network.set_istate('CD28',[0,1])
WT_IC.network.set_istate('TIM3_L',[0,1])
WT_IC.network.set_istate('LAG3_L',[1,0])
WT_IC.network.set_istate('TIGIT_L',[1,0])
WT_IC.network.set_istate('PD1_L',[1,0])
WT_IC.network.set_istate('TNFRs_L',[1,0])
WT_IC.network.set_istate('ICOS_L',[1,0])
#WT_IC.network.set_istate('TNFRs_L',[0,1])
#WT_IC.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_IC_TIM3')
run_WT_IC.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title('Wild Type with TIM3 ON', fontsize=16)
# Select outputs for visualisation of the results
#WT_IC.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
#run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
#run_WT_IC.get_nodes_probtraj().plot(legend=True)
#plt.title('WT_IC_TIM3')
#run_WT_IC.plot_piechart()
#plt.title('WT_IC_TIM3')
WT_IC = maboss.copy_and_update_parameters(WT, {'max_time':50})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[0,1])
WT_IC.network.set_istate('MHCII',[0,1])
WT_IC.network.set_istate('CD80_86',[1,0])
WT_IC.network.set_istate('CD28',[0,1])
WT_IC.network.set_istate('TIM3_L',[1,0])
WT_IC.network.set_istate('LAG3_L',[0,1])
WT_IC.network.set_istate('TIGIT_L',[1,0])
WT_IC.network.set_istate('PD1_L',[1,0])
WT_IC.network.set_istate('TNFRs_L',[1,0])
WT_IC.network.set_istate('ICOS_L',[1,0])
#WT_IC.network.set_istate('TNFRs_L',[0,1])
#WT_IC.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_IC_LAG3')
run_WT_IC.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title('Wild Type with LAG3 ON', fontsize=16)
# Select outputs for visualisation of the results
#WT_IC.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
#run_WT_IC = WT_IC.run()
# Plot the results of the WT simulation
#run_WT_IC.get_nodes_probtraj().plot(legend=True)
#plt.title('WT_IC_LAG3')
#run_WT_IC.plot_piechart()
#plt.title('WT_IC_LAG3')
Next, we explore the effect of LAG3. It has no inhibitory effect on the downstream TCR pathways. The presence of the ligands does not seem to be able to inhibit T cell activation. The reason is because Tbet is always ON and Tbet is ON because both STAT1 and GSK3 are absent and GSK3. By default, the value of Tbet will be 1.
To investigate further, we force the activation of the immune checkpoint by forcing its activity, thus not depending on the presence of the ligands or not.
WT_IC = maboss.copy_and_update_parameters(WT_IC, {'max_time':50})
WT_IC.network.set_istate('Antigen',[0,1])
WT_IC.network.set_istate('MHCI',[0,1])
WT_IC.network.set_istate('MHCII',[0,1])
WT_IC.network.set_istate('CD80_86',[1,0])
WT_IC.network.set_istate('CD28',[0,1])
WT_IC.network.set_istate('TIM3_L',[1,0])
WT_IC.network.set_istate('LAG3_L',[0,1])
WT_IC.network.set_istate('TIGIT_L',[1,0])
WT_IC.network.set_istate('PD1_L',[1,0])
WT_IC.network.set_istate('TNFRs_L',[1,0])
WT_IC.network.set_istate('ICOS_L',[1,0])
#WT_IC.network.set_istate('TNFRs_L',[0,1])
#WT_IC.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_IC.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_IC = WT_IC.run()
run_WT_IC.get_nodes_probtraj().plot(legend=True)
plt.title('CD4 cells - LAG3 ON')
run_WT_IC.plot_piechart()
plt.title('CD4 cells - LAG3 ON')
# Mutate LAG3 in cells not expressing any ligands
mut_LAG3_ON = maboss.copy_and_update_parameters(WT_IC, {'max_time':50})
#mut_LAG3_ON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_LAG3_ON.mutate("LAG3", "ON")
mutres_LAG3_ON = mut_LAG3_ON.run()
mutres_LAG3_ON.get_nodes_probtraj().plot(legend=True)
plt.title('CD4 cells - LAG3 constitutive')
mutres_LAG3_ON.plot_piechart()
plt.title('CD4 cells - LAG3 constitutive')
If the presence of LAG3 ligands at the beginning of the simulations shows no effect, the mutant expressing LAG3 constitutively has a full inhibitory effect. This shows that LAG3 is involved in negative feedback loops that may be more or less important depending on the expression / activity of the components that belong to this feedback. The qualitative nature of Boolean modelling does not permit a thorough interpretation of this effect. What we can conclude is that LAG3 is the less effective immune checkpoints in the current model.
We assume here that the cells are expressing CD80/86 in CD4+ cells (thus, with MHCII ON) as well as the positive immune checkpoints
### Simulation of the model with and without treatment
WT_Lymph = maboss.copy_and_update_parameters(WT, {'max_time':50})
WT_Lymph.network.set_istate('Antigen',[0,1])
WT_Lymph.network.set_istate('MHCI',[1,0])
WT_Lymph.network.set_istate('MHCII',[0,1])
WT_Lymph.network.set_istate('CD80_86',[0,1])
WT_Lymph.network.set_istate('TIM3_L',[1,0])
WT_Lymph.network.set_istate('LAG3_L',[1,0])
WT_Lymph.network.set_istate('TIGIT_L',[1,0])
WT_Lymph.network.set_istate('PD1_L',[1,0])
#WT_Lymph.network.set_istate('TIM3_L',[0,1])
#WT_Lymph.network.set_istate('LAG3_L',[0,1])
#WT_Lymph.network.set_istate('TIGIT_L',[0,1])
#WT_Lymph.network.set_istate('PD1_L',[0,1])
#WT_Tum.network.set_istate('TIGIT_L',[1,0])
#WT_Tum.network.set_istate('PD1_L',[1,0])
WT_Lymph.network.set_istate('TNFRs_L',[0,1])
WT_Lymph.network.set_istate('ICOS_L',[0,1])
#WT_Lymph.network.set_istate('TNFRs_L',[0,1])
#WT_Lymph.network.set_istate('ICOS_L',[0,1])
##### Visualize the phenotypes
# Select outputs for visualisation of the results
WT_Lymph.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
# Run the model
run_WT_Lymph = WT_Lymph.run()
# Plot the results of the WT simulation
run_WT_Lymph.get_nodes_probtraj().plot(legend=True)
plt.title('WT_Lymph')
run_WT_Lymph.plot_piechart()
plt.title('WT_Lymph')
Results: the T-cells do not proliferate efficiently. We conclude that when CTLA4 is present there is no efficient clonal expansion
We simulate the effect of the anti-CTLA4 treatments in the lymph nodes
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':50})
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
# Plot the results of the CTLA4 treatment simulation
mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
plt.title('anti-CTLA4_Lymph')
mutres_CTLA4_OFF.plot_piechart()
plt.title('anti-CTLA4_Lymph')
Results: T-cells get over-activated after the anti-CTLA4 treatment in the lymph nodes
# Mutate CTLA4 and PD1
mut_PD1 = WT_Lymph.copy()
mut_PD1.mutate("PD1", "OFF")
mutres_PD1 = mut_PD1.run()
mutres_PD1.plot_piechart()
plt.title('PD1 OFF')
#mutres_PD1.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
mut_PD1_CTLA4.mutate("PD1", "OFF")
mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
mutres_PD1_CTLA4.plot_piechart()
plt.title('CTLA4 and PD1 OFF')
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
The anti-PD1 treatment has obviously no effect in the lymph node
If we visualize the pathways that get activated, we see that NFkB and MAPK only are fully activated when CTLA4 ligands are present
##### Visualize the pathways
WT_Lymph.network.set_output(('PI3K_AKT','Ca_NFAT','MAPKs','NFkB'))
# Run the model
run_WT_Lymph = WT_Lymph.run()
# Plot the results of the WT simulation
run_WT_Lymph.get_nodes_probtraj().plot(legend=True)
plt.title('WT_Lymph')
run_WT_Lymph.plot_piechart()
plt.title('WT_Lymph')
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':50})
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
# Plot the results of the CTLA4 treatment simulation
mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
plt.title('anti-CTLA4_Lymph')
mutres_CTLA4_OFF.plot_piechart()
plt.title('anti-CTLA4_Lymph')
Conclusion: the 4 pathways are activated in response to the anti-CTLA4 treatment
##### Visualize the phenotypes
# Select outputs for visualisation of the results
gradual_CD4 = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':50})
gradual_CD4.network.set_istate('Antigen',[0,1])
gradual_CD4.network.set_istate('MHCI',[0,1])
gradual_CD4.network.set_istate('MHCII',[1,0])
gradual_CD4.network.set_istate('CD80_86',[0,1])
gradual_CD4.network.set_istate('TIM3_L',[1,0])
gradual_CD4.network.set_istate('LAG3_L',[1,0])
gradual_CD4.network.set_istate('TIGIT_L',[1,0])
gradual_CD4.network.set_istate('PD1_L',[1,0])
gradual_CD4.network.set_istate('TNFRs_L',[0,1])
gradual_CD4.network.set_istate('ICOS_L',[0,1])
gradual_CD4.network.set_output(('Treg','Proliferation_Survival','Th1_CTL'))
### 100%
gradual_CTLA4_treatment_100 = maboss.copy_and_update_parameters(gradual_CD4, {'max_time':50})
gradual_CTLA4_treatment_100.network.set_istate('anti_CTLA4', [0,1])
# Run the model
gradual_CTLA4_treatment_100 = gradual_CTLA4_treatment_100.run()
gradual_CTLA4_treatment_100.get_nodes_probtraj().plot(legend=True)
plt.title('CTLA4_full_treatment_100%')
gradual_CTLA4_treatment_100.plot_piechart()
plt.title('CTLA4_full_treatment_100%')
### 90%
gradual_CTLA4_treatment_90 = maboss.copy_and_update_parameters(gradual_CD4, {'max_time':50})
gradual_CTLA4_treatment_90.network.set_istate('anti_CTLA4', [0.1,0.9])
# Run the model
gradual_CTLA4_treatment_90 = gradual_CTLA4_treatment_90.run()
gradual_CTLA4_treatment_90.get_nodes_probtraj().plot(legend=True)
plt.title('CTLA4_treatment_90%')
gradual_CTLA4_treatment_90.plot_piechart()
plt.title('CTLA4_treatment_90%')
### 70%
gradual_CTLA4_treatment_70 = maboss.copy_and_update_parameters(gradual_CD4, {'max_time':50})
gradual_CTLA4_treatment_70.network.set_istate('anti_CTLA4', [0.3,0.7])
# Run the model
gradual_CTLA4_treatment_70 = gradual_CTLA4_treatment_70.run()
gradual_CTLA4_treatment_70.get_nodes_probtraj().plot(legend=True)
plt.title('CTLA4_treatment_70%')
gradual_CTLA4_treatment_70.plot_piechart()
plt.title('CTLA4_treatment_70%')
### 50%
gradual_CTLA4_treatment_50 = maboss.copy_and_update_parameters(gradual_CD4, {'max_time':50})
gradual_CTLA4_treatment_50.network.set_istate('anti_CTLA4', [0.5,0.5])
# Run the model
gradual_CTLA4_treatment_50 = gradual_CTLA4_treatment_50.run()
gradual_CTLA4_treatment_50.get_nodes_probtraj().plot(legend=True)
plt.title('CTLA4_treatment_50%')
gradual_CTLA4_treatment_50.plot_piechart()
plt.title('CTLA4_treatment_50%')
### 0%
gradual_CTLA4_treatment_0 = maboss.copy_and_update_parameters(gradual_CD4, {'max_time':50})
gradual_CTLA4_treatment_0.network.set_istate('anti_CTLA4', [1,0])
# Run the model
gradual_CTLA4_treatment_0 = gradual_CTLA4_treatment_0.run()
gradual_CTLA4_treatment_0.get_nodes_probtraj().plot(legend=True)
plt.title('CTLA4_no_treatment')
gradual_CTLA4_treatment_0.plot_piechart()
plt.title('CTLA4_no_treatment')
Next we explore the two-step process when cells are treated by anti-CTLA4 and anti_PD1 treatment
When the T-cells arrive in the TME, their population has expanded if everything went well during the priming of T-cells in the lymph node. The population of T-cells are then in contact with tumours presenting ligands (all or combination of ligands).
What if they are not in contact with all ligands? The simulations would correspond to the conditions of the lymph nodes with a treatment of CTLA4. Thus, we will not show the simulations for the presence of individual ligands in the TME but we will consider that all ligands are expressed.
We test the conditions in CD4+ and CD8+ cells independently
We test two conditions, when the ligands for PD1 and TNFRs and ICOS are present and when all ligands are present.
It is known that, in the TME, CTLA4 is absent because it has been degraded after priming, but the ligands CD80/CD86 are present and able to activate CD28 downstream pathway. In the model, the ligands CD80/86 are able to activate both CD28 and CTLA4 in a competitive manner. When CTLA4 is present, it is able to "win over" CD28. To cope with this issue, we artifically turn off CTLA4, but we could also increase the degradation rate, which would be equivalent. For simplicity, we "mutate" CTLA4 to allow the activation of CD28 in CD4+ cells
# For all nodes of the network, set the initial state to random
WT_CD4 = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':100})
# Select outputs for visualisation of the results
WT_CD4.network.set_output(('CTLA4','CD28', 'CD80_86'))
WT_CD4.mutate("CTLA4", "OFF")
WT_res_CD4 = WT_CD4.run()
# Plot the results of the CTLA4 treatment simulation
#WT_res_CD4.get_nodes_probtraj().plot(legend=True)
#plt.title('CD4 - TME')
WT_res_CD4.plot_piechart()
plt.title('CD4 - TME')
# For all nodes of the network, set the initial state to random
WT_Tum_CD4_PD1 = maboss.copy_and_update_parameters(WT_CD4, {'max_time':100})
WT_Tum_CD4_PD1.network.set_istate('Antigen',[0,1])
WT_Tum_CD4_PD1.network.set_istate('MHCI',[1,0])
WT_Tum_CD4_PD1.network.set_istate('MHCII',[0,1])
WT_Tum_CD4_PD1.network.set_istate('CD80_86',[0,1])
WT_Tum_CD4_PD1.network.set_istate('TIM3_L',[1,0])
WT_Tum_CD4_PD1.network.set_istate('LAG3_L',[1,0])
WT_Tum_CD4_PD1.network.set_istate('TIGIT_L',[1,0])
WT_Tum_CD4_PD1.network.set_istate('PD1_L',[0,1])
WT_Tum_CD4_PD1.network.set_istate('TNFRs_L',[1,0])
WT_Tum_CD4_PD1.network.set_istate('ICOS_L',[1,0])
# Select outputs for visualisation of the results
WT_Tum_CD4_PD1.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Run the model
run_WT_Tum_CD4_PD1 = WT_Tum_CD4_PD1.run()
# Plot the results of the WT simulation
run_WT_Tum_CD4_PD1.get_nodes_probtraj().plot(legend=True)
plt.title('WT_CD4_PD1')
run_WT_Tum_CD4_PD1.plot_piechart()
plt.title('WT_CD4_PD1')
# Select outputs for visualisation of the results
WT_Tum_CD4_PD1.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
# Run the model
run_WT_Tum_CD4_PD1 = WT_Tum_CD4_PD1.run()
# Plot the results of the WT simulation
run_WT_Tum_CD4_PD1.get_nodes_probtraj().plot(legend=True)
plt.title('WT_CD4_PD1')
run_WT_Tum_CD4_PD1.plot_piechart()
plt.title('WT_CD4_PD1')
# For all nodes of the network, set the initial state to random
WT_Tum_CD4_PD1_pos_IC = maboss.copy_and_update_parameters(WT_CD4, {'max_time':100})
WT_Tum_CD4_PD1_pos_IC.network.set_istate('Antigen',[0,1])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('MHCI',[1,0])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('MHCII',[0,1])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('CD80_86',[0,1])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('TIM3_L',[1,0])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('LAG3_L',[1,0])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('TIGIT_L',[1,0])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('PD1_L',[0,1])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('TNFRs_L',[0,1])
WT_Tum_CD4_PD1_pos_IC.network.set_istate('ICOS_L',[0,1])
# Select outputs for visualisation of the results
WT_Tum_CD4_PD1_pos_IC.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Run the model
run_WT_Tum_CD4_PD1_pos_IC = WT_Tum_CD4_PD1_pos_IC.run()
# Plot the results of the WT simulation
run_WT_Tum_CD4_PD1_pos_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_CD4_PD1_pos_IC')
run_WT_Tum_CD4_PD1_pos_IC.plot_piechart()
plt.title('WT_CD4_PD1_pos_IC')
# Select outputs for visualisation of the results
WT_Tum_CD4_PD1_pos_IC.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
# Run the model
run_WT_Tum_CD4_PD1_pos_IC = WT_Tum_CD4_PD1_pos_IC.run()
# Plot the results of the WT simulation
run_WT_Tum_CD4_PD1_pos_IC.get_nodes_probtraj().plot(legend=True)
plt.title('WT_CD4_PD1_pos_IC')
run_WT_Tum_CD4_PD1_pos_IC.plot_piechart()
plt.title('WT_CD4_PD1_pos_IC')
Results: There is a mixture of Treg and Th1 cells when PD1 ligands and activating immune checkpoints are present. The proportion of Th1 is slightly increased when we consider that the positive immune checkpoints are present in the simulation.
WT_Tum_CD4 = maboss.copy_and_update_parameters(WT_CD4, {'max_time':100})
WT_Tum_CD4.network.set_istate('Antigen',[0,1])
WT_Tum_CD4.network.set_istate('MHCII',[0,1])
WT_Tum_CD4.network.set_istate('MHCI',[1,0])
WT_Tum_CD4.network.set_istate('CD80_86',[0,1])
WT_Tum_CD4.network.set_istate('TIM3_L',[0,1])
WT_Tum_CD4.network.set_istate('LAG3_L',[0,1])
WT_Tum_CD4.network.set_istate('TIGIT_L',[0,1])
WT_Tum_CD4.network.set_istate('PD1_L',[0,1])
WT_Tum_CD4.network.set_istate('TNFRs_L',[0,1])
WT_Tum_CD4.network.set_istate('ICOS_L',[0,1])
# Select outputs for visualisation of the results
WT_Tum_CD4.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Run the model
run_WT_Tum_CD4 = WT_Tum_CD4.run()
run_WT_Tum_CD4.plot_piechart()
plt.title('CD4 cells - TME - all checkpoints')
run_WT_Tum_CD4.get_nodes_probtraj().plot(legend=True)
plt.title('CD4 cells - TME - all checkpoints')
# Select outputs for visualisation of the results
WT_Tum_CD4.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
# Run the model
run_WT_Tum_CD4 = WT_Tum_CD4.run()
run_WT_Tum_CD4.plot_piechart()
plt.title('CD4 cells - TME - all checkpoints')
run_WT_Tum_CD4.get_nodes_probtraj().plot(legend=True)
plt.title('CD4 cells - TME - all checkpoints')
Results: Th1 cells have TIM3 ligands present and the Treg have PD1, LAG3, TIGIT ligands present.
nodes_OFF = ['PD1','TIM3','TIGIT','LAG3','ICOS','TNFRs']
WT_Tum_CD4.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Simulate genes with loss of function
for mutant in nodes_OFF:
# print(mutant, end=' ')
mut_sim_double = WT_Tum_CD4.copy()
mut_sim_double.mutate(mutant, "OFF")
mut_res = mut_sim_double.run()
mut_res.plot_piechart(embed_labels=False, autopct=6)
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title('CD4 cells - TME -' + "anti-%s" % mutant, fontsize=16)
mut_res.get_nodes_probtraj().plot(legend=True)
plt.title('CD4 cells - TME -' + "anti-%s" % mutant)
# Mutate PD1
mut_PD1 = WT_Tum_CD4.copy()
mut_PD1.mutate("PD1", "OFF")
mutres_PD1 = mut_PD1.run()
mutres_PD1.plot_piechart()
plt.title('PD1 OFF')
#mutres_PD1.get_nodes_probtraj().plot(legend=True)
# Mutate PD1 and TIM3
mut_PD1_TIM3 = mut_PD1.copy()
mut_PD1_TIM3.mutate("TIM3", "OFF")
mutres_PD1_TIM3 = mut_PD1_TIM3.run()
mutres_PD1_TIM3.plot_piechart()
plt.title('PD1 and TIM3 OFF')
#mutres_PD1.get_nodes_probtraj().plot(legend=True)
# Mutate PD1 and LAG3
mut_PD1_LAG3 = mut_PD1.copy()
mut_PD1_LAG3.mutate("LAG3", "OFF")
mutres_PD1_LAG3 = mut_PD1_LAG3.run()
mutres_PD1_LAG3.plot_piechart()
plt.title('PD1 and LAG3 OFF')
#mutres_PD1.get_nodes_probtraj().plot(legend=True)
# Mutate PD1 and TIGIT
mut_PD1_TIGIT = mut_PD1.copy()
mut_PD1_TIGIT.mutate("TIGIT", "OFF")
mutres_PD1_TIGIT = mut_PD1_TIGIT.run()
mutres_PD1_TIGIT.plot_piechart()
plt.title('PD1 and TIGIT OFF')
#mutres_PD1.get_nodes_probtraj().plot(legend=True)
Conclusion: A double combination of PD1 and TIGIT result in full activation of TH1 cells. TM3 and LAG3 have no effect.
We perform the same simulations as above but in the case of CD8+ cells. For this case, we set MHCI to 1 and CD80_86 are OFF
# For all nodes of the network, set the initial state to random
WT_Tum_CD8_PD1 = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':100})
WT_Tum_CD8_PD1.network.set_istate('Antigen',[0,1])
WT_Tum_CD8_PD1.network.set_istate('MHCII',[1,0])
WT_Tum_CD8_PD1.network.set_istate('MHCI',[0,1])
WT_Tum_CD8_PD1.network.set_istate('CD80_86',[1,0])
WT_Tum_CD8_PD1.network.set_istate('TIM3_L',[1,0])
WT_Tum_CD8_PD1.network.set_istate('LAG3_L',[1,0])
WT_Tum_CD8_PD1.network.set_istate('TIGIT_L',[1,0])
WT_Tum_CD8_PD1.network.set_istate('PD1_L',[0,1])
WT_Tum_CD8_PD1.network.set_istate('TNFRs_L',[1,0])
WT_Tum_CD8_PD1.network.set_istate('ICOS_L',[1,0])
# Select outputs for visualisation of the results
WT_Tum_CD8_PD1.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Run the model
run_WT_Tum_CD8_PD1 = WT_Tum_CD8_PD1.run()
run_WT_Tum_CD8_PD1.get_nodes_probtraj().plot(legend=True)
plt.title('CD8 cells - TME - PD1')
run_WT_Tum_CD8_PD1.plot_piechart()
plt.title('CD8 cells - TME - PD1')
# Select outputs for visualisation of the results
WT_Tum_CD8_PD1.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
# Run the model
run_WT_Tum_CD8_PD1 = WT_Tum_CD8_PD1.run()
run_WT_Tum_CD8_PD1.get_nodes_probtraj().plot(legend=True)
plt.title('CD8 cells - TME - PD1')
run_WT_Tum_CD8_PD1.plot_piechart()
plt.title('CD8 cells - TME - PD1')
# For all nodes of the network, set the initial state to random
WT_Tum_CD8_PD1_pos_IC = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':100})
WT_Tum_CD8_PD1_pos_IC.network.set_istate('Antigen',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('MHCI',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('MHCII',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('CD80_86',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('TIM3_L',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('LAG3_L',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('TIGIT_L',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('PD1_L',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('TNFRs_L',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('ICOS_L',[0,1])
# Select outputs for visualisation of the results
WT_Tum_CD8_PD1_pos_IC.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Run the model
run_WT_Tum_CD8_PD1_pos_IC = WT_Tum_CD8_PD1_pos_IC.run()
run_WT_Tum_CD8_PD1_pos_IC.get_nodes_probtraj().plot(legend=True)
plt.title('CD8 cells - TME - PD1_pos_IC ON')
run_WT_Tum_CD8_PD1_pos_IC.plot_piechart()
plt.title('CD8 cells - TME - PD1_pos_IC ON')
# Select outputs for visualisation of the results
WT_Tum_CD8_PD1_pos_IC.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
# Run the model
run_WT_Tum_CD8_PD1_pos_IC = WT_Tum_CD8_PD1_pos_IC.run()
run_WT_Tum_CD8_PD1_pos_IC.get_nodes_probtraj().plot(legend=True)
plt.title('CD8 cells - TME - PD1_pos_IC ON')
run_WT_Tum_CD8_PD1_pos_IC.plot_piechart()
plt.title('CD8 cells - TME - PD1_pos_IC ON')
WT_Tum_CD8 = maboss.copy_and_update_parameters(WT_Lymph, {'max_time':100})
WT_Tum_CD8.network.set_istate('Antigen',[0,1])
WT_Tum_CD8.network.set_istate('MHCI',[0,1])
WT_Tum_CD8.network.set_istate('MHCII',[1,0])
WT_Tum_CD8.network.set_istate('CD80_86',[1,0])
WT_Tum_CD8.network.set_istate('TIM3_L',[0,1])
WT_Tum_CD8.network.set_istate('LAG3_L',[0,1])
WT_Tum_CD8.network.set_istate('TIGIT_L',[0,1])
WT_Tum_CD8.network.set_istate('PD1_L',[0,1])
WT_Tum_CD8.network.set_istate('TNFRs_L',[0,1])
WT_Tum_CD8.network.set_istate('ICOS_L',[0,1])
# Select outputs for visualisation of the results
WT_Tum_CD8.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Run the model
run_WT_Tum_CD8 = WT_Tum_CD8.run()
run_WT_Tum_CD8.get_nodes_probtraj().plot(legend=True)
plt.title('CD8 cells - TME - all checkpoints')
run_WT_Tum_CD8.plot_piechart()
plt.title('CD8 cells - TME - all checkpoints')
Conclusion:
nodes_OFF = ['CTLA4','PD1','TIM3','TIGIT','LAG3','ICOS','TNFRs']
WT_Tum_CD8.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
# Simulate genes with loss of function
for mutant in nodes_OFF:
# print(mutant, end=' ')
mut_sim = WT_Tum_CD8.copy()
mut_sim.mutate(mutant, "OFF")
mut_res = mut_sim.run()
mut_res.plot_piechart(embed_labels=False, autopct=4)
plt.title('CD8 cells - TME - ' + "anti-%s" % mutant)
mut_res.get_nodes_probtraj().plot(legend=True)
plt.title('CD8 cells - TME -' + "anti-%s" % mutant)
The most efficient treatment seems to be the anti-PD1 or anti-TIGIT treatments
Test for a third possible treatment in cells treated with anti-CTLA4 anti-PD1 treatments
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Tum_CD8, {'max_time':50})
WT_Tum_CD8_PD1_pos_IC.network.set_istate('Antigen',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('MHCI',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('MHCII',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('CD80_86',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('TIM3_L',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('LAG3_L',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('TIGIT_L',[1,0])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('PD1_L',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('TNFRs_L',[0,1])
WT_Tum_CD8_PD1_pos_IC.network.set_istate('ICOS_L',[0,1])
mut_CTLA4_OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
mutres_CTLA4_OFF.plot_piechart()
plt.title('CTLA4 OFF')
#mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
mut_PD1_CTLA4.mutate("PD1", "OFF")
mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
mutres_PD1_CTLA4.plot_piechart()
plt.title('CTLA4 and PD1 OFF')
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1 and TIM3
mut_PD1_CTLA4_TIM3 = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TIM3.mutate("TIM3", "OFF")
mutres_PD1_CTLA4_TIM3 = mut_PD1_CTLA4_TIM3.run()
mutres_PD1_CTLA4_TIM3.plot_piechart()
plt.title('CTLA4, PD1 and TIM3 OFF')
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1 and LAG3
mut_PD1_CTLA4_LAG3 = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_LAG3.mutate("LAG3", "OFF")
mutres_PD1_CTLA4_LAG3 = mut_PD1_CTLA4_LAG3.run()
mutres_PD1_CTLA4_LAG3.plot_piechart()
plt.title('CTLA4, PD1 and LAG3 OFF')
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1 and TIGIT
mut_PD1_CTLA4_TIGIT = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TIGIT.mutate("TIGIT", "OFF")
mutres_PD1_CTLA4_TIGIT = mut_PD1_CTLA4_TIGIT.run()
mutres_PD1_CTLA4_TIGIT.plot_piechart()
plt.title('CTLA4, PD1 and TIGIT OFF')
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
Conclusion: The triple treatment, anti-CTLA4, anti-PD1, anti-TIGIT leads to full activation of Th1 cells
Select the double treatment anti-PD1 anti-CTLA4 in CD4 cells with all cytokines initially OFF
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Tum_CD4, {'max_time':50})
mut_CTLA4_OFF.network.set_istate('Antigen',[0,1])
mut_CTLA4_OFF.network.set_istate('MHCI',[1,0])
mut_CTLA4_OFF.network.set_istate('MHCII',[0,1])
mut_CTLA4_OFF.network.set_istate('CD80_86',[0,1])
mut_CTLA4_OFF.network.set_istate('TIM3_L',[0,1])
mut_CTLA4_OFF.network.set_istate('LAG3_L',[0,1])
mut_CTLA4_OFF.network.set_istate('TIGIT_L',[0,1])
mut_CTLA4_OFF.network.set_istate('PD1_L',[0,1])
mut_CTLA4_OFF.network.set_istate('TNFRs_L',[0,1])
mut_CTLA4_OFF.network.set_istate('ICOS_L',[0,1])
mut_CTLA4_OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
mutres_CTLA4_OFF.plot_piechart()
plt.title('CD4 cells - anti-CTLA4')
#mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
mut_PD1_CTLA4.mutate("PD1", "OFF")
mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
mutres_PD1_CTLA4.plot_piechart()
plt.title('CD4 cells - anti-CTLA4 - anti-PD1')
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4
#mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Tum_CD4, {'max_time':50})
#mut_CTLA4_OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
#mut_CTLA4_OFF.mutate("CTLA4", "OFF")
#mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
#mutres_CTLA4_OFF.plot_piechart()
#mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
#mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
#mut_PD1_CTLA4.mutate("PD1", "OFF")
#mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
#mutres_PD1_CTLA4.plot_piechart()
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Tbet OFF
mut_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetOFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_TbetOFF.mutate("Tbet", "OFF")
mutres_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4_TbetOFF.run()
mutres_PD1_CTLA4_TbetOFF.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet OFF")
##
mut_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetOFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_TbetOFF.mutate("Tbet", "OFF")
mutres_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4_TbetOFF.run()
mutres_PD1_CTLA4_TbetOFF.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet OFF")
# Tbet ON
mut_PD1_CTLA4_TbetON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_TbetON.mutate("Tbet", "ON")
mutres_PD1_CTLA4_TbetON = mut_PD1_CTLA4_TbetON.run()
mutres_PD1_CTLA4_TbetON.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet ON")
mut_PD1_CTLA4_TbetON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetON.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_TbetON.mutate("Tbet", "ON")
mutres_PD1_CTLA4_TbetON = mut_PD1_CTLA4_TbetON.run()
mutres_PD1_CTLA4_TbetON.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet ON")
# FOXP3 OFF
mut_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_FOXP3OFF.mutate("FOXP3", "OFF")
mutres_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4_FOXP3OFF.run()
mutres_PD1_CTLA4_FOXP3OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 OFF")
mut_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_FOXP3OFF.mutate("FOXP3", "OFF")
mutres_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4_FOXP3OFF.run()
mutres_PD1_CTLA4_FOXP3OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 OFF")
# FOXP3 ON
mut_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3ON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_FOXP3ON.mutate("FOXP3", "ON")
mutres_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4_FOXP3ON.run()
mutres_PD1_CTLA4_FOXP3ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 ON")
# FOXP3 ON
mut_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3ON.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_FOXP3ON.mutate("FOXP3", "ON")
mutres_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4_FOXP3ON.run()
mutres_PD1_CTLA4_FOXP3ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 ON")
# FOXO1 OFF
mut_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_FOXO1OFF.mutate("FOXO1", "OFF")
mutres_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4_FOXO1OFF.run()
mutres_PD1_CTLA4_FOXO1OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 OFF")
# FOXO1 OFF
mut_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_FOXO1OFF.mutate("FOXO1", "OFF")
mutres_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4_FOXO1OFF.run()
mutres_PD1_CTLA4_FOXO1OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 OFF")
# FOXO1 ON
mut_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1ON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mutres_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4_FOXO1ON.run()
mutres_PD1_CTLA4_FOXO1ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 ON")
# FOXO1 ON
mut_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1ON.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mutres_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4_FOXO1ON.run()
mutres_PD1_CTLA4_FOXO1ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 ON")
Results: FOXP3 and FOXO1 OFF seem to improve the response by increasing the proliferation of T-cells. They are good candidates to improve the response in the double treatment anti-PD1 / anti-CTLA4 in the TME
Select the double treatment anti-PD1 anti-CTLA4 in CD8 cells with all cytokines initially OFF
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Tum_CD8, {'max_time':50})
mut_CTLA4_OFF.network.set_istate('Antigen',[0,1])
mut_CTLA4_OFF.network.set_istate('MHCI',[0,1])
mut_CTLA4_OFF.network.set_istate('MHCII',[1,0])
mut_CTLA4_OFF.network.set_istate('CD80_86',[1,0])
mut_CTLA4_OFF.network.set_istate('TIM3_L',[0,1])
mut_CTLA4_OFF.network.set_istate('LAG3_L',[0,1])
mut_CTLA4_OFF.network.set_istate('TIGIT_L',[0,1])
mut_CTLA4_OFF.network.set_istate('PD1_L',[0,1])
mut_CTLA4_OFF.network.set_istate('TNFRs_L',[0,1])
mut_CTLA4_OFF.network.set_istate('ICOS_L',[0,1])
mut_CTLA4_OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
#mutres_CTLA4_OFF.plot_piechart()
#mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
mut_PD1_CTLA4.mutate("PD1", "OFF")
mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
mutres_PD1_CTLA4.plot_piechart()
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Tum_CD4, {'max_time':50})
mut_CTLA4_OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
#mutres_CTLA4_OFF.plot_piechart()
#mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
mut_PD1_CTLA4.mutate("PD1", "OFF")
mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
mutres_PD1_CTLA4.plot_piechart()
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
# Tbet OFF
mut_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetOFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_TbetOFF.mutate("Tbet", "OFF")
mutres_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4_TbetOFF.run()
mutres_PD1_CTLA4_TbetOFF.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet OFF")
##
mut_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetOFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_TbetOFF.mutate("Tbet", "OFF")
mutres_PD1_CTLA4_TbetOFF = mut_PD1_CTLA4_TbetOFF.run()
mutres_PD1_CTLA4_TbetOFF.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet OFF")
# Tbet ON
mut_PD1_CTLA4_TbetON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_TbetON.mutate("Tbet", "ON")
mutres_PD1_CTLA4_TbetON = mut_PD1_CTLA4_TbetON.run()
mutres_PD1_CTLA4_TbetON.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet ON")
mut_PD1_CTLA4_TbetON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_TbetON.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_TbetON.mutate("Tbet", "ON")
mutres_PD1_CTLA4_TbetON = mut_PD1_CTLA4_TbetON.run()
mutres_PD1_CTLA4_TbetON.plot_piechart()
plt.title("PD1 / CTLA4 / Tbet ON")
# FOXP3 OFF
mut_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_FOXP3OFF.mutate("FOXP3", "OFF")
mutres_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4_FOXP3OFF.run()
mutres_PD1_CTLA4_FOXP3OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 OFF")
mut_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_FOXP3OFF.mutate("FOXP3", "OFF")
mutres_PD1_CTLA4_FOXP3OFF = mut_PD1_CTLA4_FOXP3OFF.run()
mutres_PD1_CTLA4_FOXP3OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 OFF")
# FOXP3 ON
mut_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3ON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_FOXP3ON.mutate("FOXP3", "ON")
mutres_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4_FOXP3ON.run()
mutres_PD1_CTLA4_FOXP3ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 ON")
# FOXP3 ON
mut_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXP3ON.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_FOXP3ON.mutate("FOXP3", "ON")
mutres_PD1_CTLA4_FOXP3ON = mut_PD1_CTLA4_FOXP3ON.run()
mutres_PD1_CTLA4_FOXP3ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXP3 ON")
# FOXO1 OFF
mut_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_FOXO1OFF.mutate("FOXO1", "OFF")
mutres_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4_FOXO1OFF.run()
mutres_PD1_CTLA4_FOXO1OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 OFF")
# FOXO1 OFF
mut_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_FOXO1OFF.mutate("FOXO1", "OFF")
mutres_PD1_CTLA4_FOXO1OFF = mut_PD1_CTLA4_FOXO1OFF.run()
mutres_PD1_CTLA4_FOXO1OFF.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 OFF")
# FOXO1 ON
mut_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1ON.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mutres_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4_FOXO1ON.run()
mutres_PD1_CTLA4_FOXO1ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 ON")
# FOXO1 ON
mut_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_FOXO1ON.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mutres_PD1_CTLA4_FOXO1ON = mut_PD1_CTLA4_FOXO1ON.run()
mutres_PD1_CTLA4_FOXO1ON.plot_piechart()
plt.title("PD1 / CTLA4 / FOXO1 ON")
Since the cytokines are able to modulate the activity of the transcription factors, we explore the effect of their presence in the TME
To simulate CD8 cells, modify below the model name 'WT_Tum_CD4'by 'WT_Tum_CD8'
# Mutate CTLA4
mut_CTLA4_OFF = maboss.copy_and_update_parameters(WT_Tum_CD4, {'max_time':50})
mut_CTLA4_OFF.network.set_istate('Antigen',[0,1])
mut_CTLA4_OFF.network.set_istate('MHCI',[1,0])
mut_CTLA4_OFF.network.set_istate('MHCII',[0,1])
mut_CTLA4_OFF.network.set_istate('CD80_86',[0,1])
mut_CTLA4_OFF.network.set_istate('TIM3_L',[0,1])
mut_CTLA4_OFF.network.set_istate('LAG3_L',[0,1])
mut_CTLA4_OFF.network.set_istate('TIGIT_L',[0,1])
mut_CTLA4_OFF.network.set_istate('PD1_L',[0,1])
mut_CTLA4_OFF.network.set_istate('TNFRs_L',[0,1])
mut_CTLA4_OFF.network.set_istate('ICOS_L',[0,1])
mut_CTLA4_OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_CTLA4_OFF.mutate("CTLA4", "OFF")
mutres_CTLA4_OFF = mut_CTLA4_OFF.run()
mutres_CTLA4_OFF.plot_piechart()
#mutres_CTLA4_OFF.get_nodes_probtraj().plot(legend=True)
# Mutate CTLA4 and PD1
mut_PD1_CTLA4 = mut_CTLA4_OFF.copy()
mut_PD1_CTLA4.mutate("PD1", "OFF")
mutres_PD1_CTLA4 = mut_PD1_CTLA4.run()
mutres_PD1_CTLA4.plot_piechart()
#mutres_PD1_CTLA4.get_nodes_probtraj().plot(legend=True)
#### IFNG ONLY
WTa = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTa.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTa.network.set_istate('IFNG', [0,1])
WTa.network.set_istate('TGFb', [1,0])
WTa.network.set_istate('IL27', [1,0])
# Run the model
run_WTa = WTa.run()
# Plot the results of the WT simulation
#run_WTa.get_nodes_probtraj().plot(legend=True)
#plt.title("IFG ON only")
run_WTa.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IFNG ON only", fontsize=16)
###############
WTa = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTa.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTa.network.set_istate('IFNG', [0,1])
WTa.network.set_istate('TGFb', [1,0])
WTa.network.set_istate('IL27', [1,0])
# Run the model
run_WTa = WTa.run()
# Plot the results of the WT simulation
#run_WTa.get_nodes_probtraj().plot(legend=True)
#plt.title("IFG ON only")
run_WTa.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IFNG ON only", fontsize=16)
#WTa.print_cfg()
## IL27
WTb = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTb.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTb.network.set_istate('IFNG', [1,0])
WTb.network.set_istate('TGFb', [1,0])
WTb.network.set_istate('IL27', [0,1])
run_WTb = WTb.run()
# Plot the results of the WT simulation
run_WTb.get_nodes_probtraj().plot(legend=True)
plt.title("IL27 ON only")
run_WTb.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IL27 ON only",fontsize=16)
#######
WTb = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTb.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTb.network.set_istate('IFNG', [1,0])
WTb.network.set_istate('TGFb', [1,0])
WTb.network.set_istate('IL27', [0,1])
run_WTb = WTb.run()
# Plot the results of the WT simulation
#run_WTb.get_nodes_probtraj().plot(legend=True)
#plt.title("IL27 ON only")
run_WTb.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IL27 ON only",fontsize=16)
#############
WTb = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTb.network.set_output(('Tbet', 'FOXP3','FOXO1','IL27','TGFb','IFNG', 'Ca_NFAT','PI3K_AKT'))
WTb.network.set_istate('IFNG', [1,0])
WTb.network.set_istate('TGFb', [1,0])
WTb.network.set_istate('IL27', [0,1])
run_WTb = WTb.run()
# Plot the results of the WT simulation
run_WTb.get_nodes_probtraj().plot(legend=True)
plt.title("IL27 ON only")
run_WTb.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IL27 ON only",fontsize=16)
## TGFb ON
WTc = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTc.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTc.network.set_istate('IFNG', [1,0])
WTc.network.set_istate('TGFb', [0,1])
WTc.network.set_istate('IL27', [1,0])
run_WTc = WTc.run()
# Plot the results of the WT simulation
#run_WTc.get_nodes_probtraj().plot(legend=True)
#plt.title("TGFb ON only")
run_WTc.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("TGFb ON only",fontsize=16)
######
WTc = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTc.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTc.network.set_istate('IFNG', [1,0])
WTc.network.set_istate('TGFb', [0,1])
WTc.network.set_istate('IL27', [1,0])
run_WTc = WTc.run()
# Plot the results of the WT simulation
#run_WTc.get_nodes_probtraj().plot(legend=True)
#plt.title("TGFb ON only")
run_WTc.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("TGFb ON only",fontsize=16)
WTc = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTc.network.set_output(('Tbet', 'FOXP3','FOXO1','IL27','TGFb','IFNG'))
WTc.network.set_istate('IFNG', [1,0])
WTc.network.set_istate('TGFb', [0,1])
WTc.network.set_istate('IL27', [1,0])
run_WTc = WTc.run()
# Plot the results of the WT simulation
#run_WTc.get_nodes_probtraj().plot(legend=True)
#plt.title("TGFb ON only")
run_WTc.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("TGFb ON only",fontsize=16)
Results:
## IL12 ON
WTc_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTc_bis.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTc_bis.network.set_istate('IFNG', [1,0])
WTc_bis.network.set_istate('TGFb', [1,0])
WTc_bis.network.set_istate('IL27', [1,0])
WTc_bis.network.set_istate('IL12', [0,1])
run_WTc_bis = WTc_bis.run()
# Plot the results of the WT simulation
#run_WTc_bis.get_nodes_probtraj().plot(legend=True)
#plt.title("TGFb ON only")
run_WTc_bis.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IL12 ON only",fontsize=16)
######
WTc_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTc_bis.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTc_bis.network.set_istate('IFNG', [1,0])
WTc_bis.network.set_istate('TGFb', [1,0])
WTc_bis.network.set_istate('IL27', [1,0])
WTc_bis.network.set_istate('IL12', [0,1])
run_WTc_bis = WTc_bis.run()
# Plot the results of the WT simulation
#run_WTc_bis.get_nodes_probtraj().plot(legend=True)
#plt.title("TGFb ON only")
run_WTc_bis.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IL12 ON only",fontsize=16)
WTc_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTc_bis.network.set_output(('Tbet', 'FOXP3','FOXO1','IL27','TGFb','IFNG'))
WTc_bis.network.set_istate('IFNG', [1,0])
WTc_bis.network.set_istate('TGFb', [1,0])
WTc_bis.network.set_istate('IL27', [1,0])
WTc_bis.network.set_istate('IL12', [0,1])
run_WTc_bis = WTc_bis.run()
# Plot the results of the WT simulation
#run_WTc_bis.get_nodes_probtraj().plot(legend=True)
#plt.title("TGFb ON only")
run_WTc_bis.plot_piechart()
params = {'legend.fontsize': 14,
'legend.handlelength': 0.7}
plt.rcParams.update(params)
plt.title("IL12 ON only",fontsize=16)
# Load the Wild-Type model
WTd = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTd.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTd.network.set_istate('IFNG', [1,0])
WTd.network.set_istate('TGFb', [0,1])
WTd.network.set_istate('IL27', [0,1])
run_WTd = WTd.run()
# Plot the results of the WT simulation
#run_WTd.get_nodes_probtraj().plot(legend=True)
#plt.title("IL27 ON - TGFb ON")
run_WTd.plot_piechart()
plt.title("IL27 ON - TGFb ON")
############
WTd.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTd.network.set_istate('IFNG', [1,0])
WTd.network.set_istate('TGFb', [0,1])
WTd.network.set_istate('IL27', [0,1])
run_WTd = WTd.run()
# Plot the results of the WT simulation
#run_WTd.get_nodes_probtraj().plot(legend=True)
#plt.title("IL27 ON - TGFb ON")
run_WTd.plot_piechart()
plt.title("IL27 ON - TGFb ON")
## IL27 + IFNg
WTd = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTd.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTd.network.set_istate('IFNG', [0,1])
WTd.network.set_istate('TGFb', [1,0])
WTd.network.set_istate('IL27', [0,1])
run_WTd = WTd.run()
# Plot the results of the WT simulation
#run_WTd.get_nodes_probtraj().plot(legend=True)
#plt.title("IL27 ON - IFNg ON")
run_WTd.plot_piechart()
plt.title("IL27 ON - IFNG ON")
##########
WTd = maboss.copy_and_update_parameters(mut_PD1_CTLA4, {'max_time':50})
WTd.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTd.network.set_istate('IFNG', [0,1])
WTd.network.set_istate('TGFb', [1,0])
WTd.network.set_istate('IL27', [0,1])
run_WTd = WTd.run()
# Plot the results of the WT simulation
#run_WTd.get_nodes_probtraj().plot(legend=True)
#plt.title("IL27 ON - IFNg ON")
run_WTd.plot_piechart()
plt.title("IL27 ON - IFNG ON")
# STAT3 OFF
mut_PD1_CTLA4_STAT3OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_STAT3OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_STAT3OFF.mutate("STAT3", "OFF")
mutres_PD1_CTLA4_STAT3OFF = mut_PD1_CTLA4_STAT3OFF.run()
mutres_PD1_CTLA4_STAT3OFF.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF")
# STAT3 OFF
mut_PD1_CTLA4_STAT3OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_STAT3OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_STAT3OFF.mutate("STAT3", "OFF")
mutres_PD1_CTLA4_STAT3OFF = mut_PD1_CTLA4_STAT3OFF.run()
mutres_PD1_CTLA4_STAT3OFF.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF")
WTe = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTe.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTe.network.set_istate('IFNG', [1,0])
WTe.network.set_istate('TGFb', [0,1])
WTe.network.set_istate('IL27', [1,0])
run_WTe = WTe.run()
# Plot the results of the WT simulation
#run_WTe.get_nodes_probtraj().plot(legend=True)
run_WTe.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - TGFb ON")
##########
WTe = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTe.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTe.network.set_istate('IFNG', [1,0])
WTe.network.set_istate('TGFb', [0,1])
WTe.network.set_istate('IL27', [1,0])
run_WTe = WTe.run()
# Plot the results of the WT simulation
#run_WTe.get_nodes_probtraj().plot(legend=True)
run_WTe.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - TGFb ON")
WTf = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTf.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTf.network.set_istate('IFNG', [0,1])
WTf.network.set_istate('TGFb', [1,0])
WTf.network.set_istate('IL27', [1,0])
run_WTf = WTf.run()
# Plot the results of the WT simulation
#run_WTf.get_nodes_probtraj().plot(legend=True)
run_WTf.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - IFNG ON")
##########
WTf = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTf.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTf.network.set_istate('IFNG', [0,1])
WTf.network.set_istate('TGFb', [1,0])
WTf.network.set_istate('IL27', [1,0])
run_WTf = WTf.run()
# Plot the results of the WT simulation
#run_WTf.get_nodes_probtraj().plot(legend=True)
run_WTf.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - IFNG ON")
WTg = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTg.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTg.network.set_istate('IFNG', [1,0])
WTg.network.set_istate('TGFb', [1,0])
WTg.network.set_istate('IL27', [0,1])
run_WTg = WTg.run()
# Plot the results of the WT simulation
#run_WTg.get_nodes_probtraj().plot(legend=True)
run_WTg.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - IL27 ON")
##########
WTg = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTg.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTg.network.set_istate('IFNG', [1,0])
WTg.network.set_istate('TGFb', [1,0])
WTg.network.set_istate('IL27', [0,1])
run_WTg = WTg.run()
# Plot the results of the WT simulation
#run_WTg.get_nodes_probtraj().plot(legend=True)
run_WTg.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - IL27 ON")
WTg_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTg_bis.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTg_bis.network.set_istate('IFNG', [1,0])
WTg_bis.network.set_istate('TGFb', [1,0])
WTg_bis.network.set_istate('IL27', [1,0])
WTg_bis.network.set_istate('IL12', [0,1])
run_WTg_bis = WTg_bis.run()
# Plot the results of the WT simulation
#run_WTg_bis.get_nodes_probtraj().plot(legend=True)
run_WTg_bis.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - IL12 ON")
##########
WTg_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT3OFF, {'max_time':50})
WTg_bis.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTg_bis.network.set_istate('IFNG', [1,0])
WTg_bis.network.set_istate('TGFb', [1,0])
WTg_bis.network.set_istate('IL27', [1,0])
WTg_bis.network.set_istate('IL12', [0,1])
run_WTg_bis = WTg_bis.run()
# Plot the results of the WT simulation
#run_WTg_bis.get_nodes_probtraj().plot(legend=True)
run_WTg_bis.plot_piechart()
plt.title("PD1 / CTLA4 / STAT3 OFF - IL12 ON")
# STAT1 OFF
mut_PD1_CTLA4_STAT1OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_STAT1OFF.network.set_output(('Proliferation_Survival','Th1_CTL', 'Treg'))
mut_PD1_CTLA4_STAT1OFF.mutate("STAT1", "OFF")
mutres_PD1_CTLA4_STAT1OFF = mut_PD1_CTLA4_STAT1OFF.run()
mutres_PD1_CTLA4_STAT1OFF.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF")
# STAT1 OFF
mut_PD1_CTLA4_STAT1OFF = mut_PD1_CTLA4.copy()
mut_PD1_CTLA4_STAT1OFF.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
mut_PD1_CTLA4_STAT1OFF.mutate("STAT1", "OFF")
mutres_PD1_CTLA4_STAT1OFF = mut_PD1_CTLA4_STAT1OFF.run()
mutres_PD1_CTLA4_STAT1OFF.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF")
WTh = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTh.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTh.network.set_istate('IFNG', [1,0])
WTh.network.set_istate('TGFb', [0,1])
WTh.network.set_istate('IL27', [1,0])
run_WTh = WTh.run()
# Plot the results of the WT simulation
#run_WTh.get_nodes_probtraj().plot(legend=True)
run_WTh.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - TGFb ON")
##########
WTh = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTh.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTh.network.set_istate('IFNG', [1,0])
WTh.network.set_istate('TGFb', [0,1])
WTh.network.set_istate('IL27', [1,0])
run_WTh = WTh.run()
# Plot the results of the WT simulation
#run_WTh.get_nodes_probtraj().plot(legend=True)
run_WTh.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - TGFb ON")
WTi = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTi.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTi.network.set_istate('IFNG', [0,1])
WTi.network.set_istate('TGFb', [1,0])
WTi.network.set_istate('IL27', [1,0])
run_WTi = WTi.run()
# Plot the results of the WT simulation
#run_WTi.get_nodes_probtraj().plot(legend=True)
run_WTi.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - IFNG ON")
##########
WTi = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTi.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTi.network.set_istate('IFNG', [0,1])
WTi.network.set_istate('TGFb', [1,0])
WTi.network.set_istate('IL27', [1,0])
run_WTi = WTi.run()
# Plot the results of the WT simulation
#run_WTi.get_nodes_probtraj().plot(legend=True)
run_WTi.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - IFNG ON")
WTj = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTj.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTj.network.set_istate('IFNG', [1,0])
WTj.network.set_istate('TGFb', [1,0])
WTj.network.set_istate('IL27', [0,1])
run_WTj = WTj.run()
# Plot the results of the WT simulation
#run_WTj.get_nodes_probtraj().plot(legend=True)
run_WTj.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - IL27 ON")
##########
WTj = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTj.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTj.network.set_istate('IFNG', [1,0])
WTj.network.set_istate('TGFb', [0,1])
WTj.network.set_istate('IL27', [0,1])
run_WTj = WTj.run()
# Plot the results of the WT simulation
#run_WTj.get_nodes_probtraj().plot(legend=True)
run_WTj.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - IL27 ON")
WTk_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTk_bis.network.set_output(('Th1_CTL', 'Treg','Proliferation_Survival'))
WTk_bis.network.set_istate('IFNG', [1,0])
WTk_bis.network.set_istate('TGFb', [1,0])
WTk_bis.network.set_istate('IL27', [1,0])
WTk_bis.network.set_istate('IL12', [0,1])
run_WTk_bis = WTk_bis.run()
# Plot the results of the WT simulation
#run_WTk_bis.get_nodes_probtraj().plot(legend=True)
run_WTk_bis.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - IL12 ON")
##########
WTk_bis = maboss.copy_and_update_parameters(mut_PD1_CTLA4_STAT1OFF, {'max_time':50})
WTk_bis.network.set_output(('PD1', 'CTLA4','TIM3','LAG3','TIGIT','ICOS','TNFRs'))
WTk_bis.network.set_istate('IFNG', [1,0])
WTk_bis.network.set_istate('TGFb', [1,0])
WTk_bis.network.set_istate('IL27', [1,0])
WTk_bis.network.set_istate('IL12', [0,1])
run_WTk_bis = WTk_bis.run()
# Plot the results of the WT simulation
#run_WTk_bis.get_nodes_probtraj().plot(legend=True)
run_WTk_bis.plot_piechart()
plt.title("PD1 / CTLA4 / STAT1 OFF - IL12 ON")